#pragma once
#include <semaphore.h> //信号量头文件
#include <zookeeper/zookeeper.h>
#include <string>

// 封装zk的客户端类
class zkClient
{
public:
    zkClient();
    ~zkClient();
    // zkClient的启动连接zkServer
    void Start();
    // 在zkserver上根据指定的path创建znode节点
    // 节点的路径、数据、数据长度、节点的分类永久or临时
    void Create(const char *path, const char *data, int datalen, int state = 0);
    // 根据参数指定的znode节点路径，获取节点的值
    std::string GetData(const char *path);

private:
    //zk的客户端句柄，根据这个句柄就可以操作zkServer
    //是 ZooKeeper C API 中的客户端句柄，用于与 ZooKeeper 服务进行交互。
    //可以把它理解为“连接到 ZooKeeper 服务器的通道”或“客户端连接标识”。
    //当建立连接成功后就会生成一个句柄，里面记录了各种的信息
    zhandle_t *m_zhandle;
};